iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 16
0
Software Development

iOS 從 Objective-c 進化為 Swift 的 30天之旅系列 第 16

[Day 16] Swift 成本功能部分串接

  • 分享至 

  • xImage
  •  

之前只到UI部分
功能串接比較少
今天就加減把功能串起來
喔對上次說tag要使用100以上比較安全是真的
在實作的時候真的不小心把其他button修改到了
真的是還是要參照使用說明

好拉上次是做到把產品名稱show出來而已
今天就是要把資料存進去

我也其實不太知道別人的做法
我就先造我的試試看
一開始先宣告 一個productList
為ProductItemtMode的array

var productList = [ProductItemtMode]()

ProductItemtMode 裡面市長這樣的
基本上存取 價格 產品 日期 數量
現階段先設定這樣

class ProductItemtMode: NSObject {
    var price: Int?
    var product: Int?
    var date: Date?
    var amount: Int?
}

然後我的讀取func 長這樣
去我的SQLite裡面找資料

func reloadData() {
    productList = [ProductItemtMode]()
    let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
    let db = try? Connection("\(path)/Chuhuo.sqlite")

    for user  in (try? db?.prepare(users))!! {
        let productItemMode = ProductItemtMode()
        productItemMode.price = user[price]
        productItemMode.product = user[product]
        productItemMode.date = user[date]
        productItemMode.amount = user[amount]
        productList.append(productItemMode)
    }
}

寫入的func
傳入ProductItemtMode 近來
如果寫入成功的話
會回傳一個Bool值

func appendData(productMode: ProductItemtMode) -> Bool {
    let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
    let db = try? Connection("\(path)/Chuhuo.sqlite")

    do {
        let rowid = try db?.run(users.insert(price <- productMode.price!, product <- productMode.product!, date <- productMode.date!, amount <- productMode.amount!))
        print("inserted id: \(rowid!)")
        return true
    } catch {
        print("insertion failed: \(error)")
        return false
    }
}

成果部分
新增 大海螺 3個 900元 成本
儲存至SQLite
如果空值 會提出Aler

 @IBAction func clickSaveBtn(sender:UIButton) {
    print("Save")
    if price == 0 || amount == 0{
        // 建立一個提示框
        let alertController = UIAlertController(
            title: "提示",
            message: "請輸入價格或數量",
            preferredStyle: .alert)

        // 建立[確認]按鈕
        let okAction = UIAlertAction(
            title: "確認",
            style: .default,
            handler: {
                (action: UIAlertAction!) -> Void in
                print("按下確認後的動作")
        })
        alertController.addAction(okAction)

        // 顯示提示框
        self.present(
            alertController,
            animated: true,
            completion: nil)
    }else{
        let productItemMode = ProductItemtMode()
        productItemMode.price =  Int(price)
        productItemMode.amount = Int(amount)
        productItemMode.product = product
        productItemMode.date = Date()

        let productMode = ProductMode()
        if productMode.appendData(productMode: productItemMode){
            print("Inster Success!!")
            self.dismiss(animated: true, completion:nil)
        }else{
            print("Inster Fail!!")
            self.dismiss(animated: true, completion:nil)
        }

        productMode.reloadData()
        print(productMode.productList.count)
    }
}

完成以後返回原來的controller
viewWillAppear reload tableview

收入部分
目前只有顯示現在有儲存的成本


上一篇
[Day 15] Swfit GCD 單線程 多線程 簡易使用
下一篇
[Day 17] Swift 繼承 新手簡易範例
系列文
iOS 從 Objective-c 進化為 Swift 的 30天之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言